// >>>>>> 模拟背压机制 <<<<<< //
// >>>>>> 模拟背压机制 <<<<<< //
// >>>>>> 模拟背压机制 <<<<<< //

const fs = require('fs')

// 生成数据的可读流
let rs = fs.createReadStream('test.txt', {
  highWaterMark: 4,
})

// 消费数据的可写流
let ws = fs.createWriteStream('pipe.txt', {
  highWaterMark: 1,
})

let flag = true
rs.on('data', (chunk) => {
  flag = ws.write(chunk, () => {
    console.info('write done')
  })
  // 缓存区满了,先别生产数据了
  if (!flag) {
    rs.pause()
  }
})

// 缓存区有空间接纳新数据,执行 drain 事件
ws.on('drain', () => {
  rs.resume()
})
